/**
 * Chat模块数据模型定义
 */

// 会话基础信息
export interface ChatSession {
    /** 会话ID，6位随机小写字母数字组合 */
    chatId: string
    /** 会话名称 */
    chatName: string
    /** 会话类型 */
    type: string
    /** 创建时间 */
    createdAt?: string
    /** 更新时间 */
    updatedAt?: string
    /** 消息数量 */
    messageCount?: number
}

// 消息模型
export interface ChatMessage {
    /** 消息ID */
    messageId: string
    /** 所属会话ID */
    chatId: string
    /** 发送者类型：user-用户，assistant-AI助手 */
    sender: 'user' | 'assistant'
    /** 消息内容 */
    content: string
    /** 发送时间 */
    timestamp?: string
    /** 消息状态：sending-发送中，sent-已发送，failed-发送失败 */
    status?: 'sending' | 'sent' | 'failed'
    /** 是否已读 */
    isRead?: boolean
}

// 对话详情模型
export interface ChatDetail {
    /** 会话ID */
    chatId: string
    /** 会话名称 */
    chatName: string
    /** 消息列表 */
    messages: ChatMessage[]
    /** 创建时间 */
    createdAt?: string
    /** 最后活跃时间 */
    lastActiveAt?: string
}

// 发送消息请求模型
export interface SendMessageRequest {
    /** 会话ID */
    chatId: string
    /** 消息内容 */
    content: string
    /** 是否为流式响应 */
    isStream?: boolean
    /** 消息类型：text-文本，image-图片，file-文件 */
    messageType?: 'text' | 'image' | 'file'
    /** 附加数据 */
    metadata?: Record<string, any>
}

// 发送消息响应模型
export interface SendMessageResponse {
    /** 响应内容 */
    data: string
    /** 消息ID */
    messageId?: string
    /** 响应时间 */
    timestamp?: string
    /** 响应状态 */
    status?: 'success' | 'error'
}

// 流式消息响应模型
export interface StreamMessageResponse {
    /** 消息ID */
    messageId: string
    /** 会话ID */
    chatId: string
    /** 消息内容片段 */
    content: string
    /** 是否为最后一段 */
    isEnd: boolean
    /** 时间戳 */
    timestamp: string
}

// 会话统计信息
export interface ChatStatistics {
    /** 总会话数 */
    totalSessions: number
    /** 今日新增会话数 */
    todayNewSessions: number
    /** 总消息数 */
    totalMessages: number
    /** 今日消息数 */
    todayMessages: number
    /** 活跃会话数 */
    activeSessions: number
}

// 会话搜索参数
export interface ChatSearchParams {
    /** 关键词 */
    keyword?: string
    /** 会话类型 */
    type?: string
    /** 开始时间 */
    startDate?: string
    /** 结束时间 */
    endDate?: string
    /** 页码 */
    page?: number
    /** 每页数量 */
    pageSize?: number
    /** 排序字段 */
    sortBy?: 'createdAt' | 'updatedAt' | 'messageCount'
    /** 排序方向 */
    sortOrder?: 'asc' | 'desc'
} 